Maximum average subarray I [Math]¶
Time: O(N); Space: O(1); easy
Given an array consisting of N integers, find the contiguous subarray of given length K that has the maximum average value. And you need to output the maximum average value.
Example 1:
Input: nums = [1,12,-5,-6,50,3], k = 4
Output: 12.75
Explanation:
Maximum average is (12-5-6+50)/4 = 51/4 = 12.75
Notes:
1 <= K <= N <= 30,000.
Elements of the given array will be in the range [-10,000, 10,000].
[1]:
class Solution1(object):
def findMaxAverage(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: float
"""
total = 0
for i in range(k):
total += nums[i]
result = total
for i in range(k, len(nums)):
total += nums[i] - nums[i-k]
result = max(result, total)
return float(result) / k
[2]:
s = Solution1()
nums = [1, 12, -5, -6, 50, 3]
K = 4
assert s.findMaxAverage(nums, K) == 12.75